package main

import (
	"context"
	"fmt"
	"time"
)

func main7() {
	// valCtx1中存储键值对: k1-1
	valCtx1 := context.WithValue(context.Background(), "k1", "1")

	// valCtx2中存储键值对: k2-2，并从valCtx1中继承：k1-1
	valCtx2 := context.WithValue(valCtx1, "k2", "2")

	// valCtx3中存储键值对: k3-3，并继承了k1-1, k2-2
	valCtx3 := context.WithValue(valCtx2, "k3", "3")

	go func(ctx context.Context) {
		// 在函数中访问k1, k2, k3对应的值
		fmt.Println("k1 = ", ctx.Value("k1"))
		fmt.Println("k2 = ", ctx.Value("k2"))
		fmt.Println("k3 = ", ctx.Value("k3"))
	}(valCtx3)

	time.Sleep(1 * time.Second)
}
